在幾個月的經歷中,深感自己技術實力上的不足,技能樹沒點滿,因此錯失了很多機會。因此,這次鐵人賽想來挑戰30天記錄從頭學習K8s的過程。
首先,在進入正題之前,需要對虛擬機器、容器化技術有稍稍地認識:
簡單來說,Container的出現大大地改善了過往虛擬機(Virtual Machine)的缺點,像是VM最為人所詬病的就是容量大、啟動速度慢等,而容器(Container)此時的出現,以更輕量化的方式提供使用者打包應用程式,其中最常聽到的有Docker。
有了Docker來標準化容器,下一個議題就是,該如何管理這些容器呢?
這也是K8s作為Container Orchestration Platform的誕生。
是2014年由Google所開源推出的專案Kubernetes,目標是管理跨多個主機上的容器編排,提供自動化部署、管理容器化應用程式等,其理論來源於Google內的Borg,可參考此篇論文。
高可用性: K8s會自動將工作負載調度到健康的Pod上,確保該服務不中斷,維持服務可用性。
負載平衡: K8s提供了多種內部和外部負載平衡機制。
自動Rollouts/Rollbacks: 透過K8s自動化部署,且在不違背服務可用性前提下,將實際狀態進行更新。
具體來說,如果現階段某服務更新版本後出現問題,可透過Rolling Back來恢復舊版本。
自我修復: 當服務發生異常時,K8s會透過偵測機制,及時將該Pod刪除定重新創建。
之後想寫一篇關於K8s和Docker Swarm的差別與如何選擇
K8s的崛起是因為它可以協助管理微服務(Microservice),可自動化部署及管理多台機器上的容器。
何謂微服務?
相比單體式架構(Monolithic),微服務架構中中各服務皆為獨立運作,具有低耦合、高可擴展性等特性。
可參考此文
在Cloud Computing時代下,K8s已經是近來最常聽到的技術名詞了,要更好地管理容器,K8s是必備的技能之一。
Day1 - 為什麼要學 K8s
Day2 - K8s 元件
今天很Overview地帶過K8s概念,明天預計會開始慢慢介紹其中架構與元件,後續若有詳細規劃,再行補充。